package model;

import java.util.Vector;


public class Material implements Observable{
	
	private int codigo;
	private String nombre;
	private int cantidadStock;
	private int puntoPedido;
	private float costo;
	private Proveedor proveedor;
	private Vector<Observer> observers;
	
	public Material(int codigo, String nombre, int stock, int ptoPed, float costo, Proveedor proveedor){
		this.codigo=codigo;
		this.nombre=nombre;
		this.cantidadStock=stock;
		this.puntoPedido=ptoPed;
		this.costo=costo;
		this.proveedor=proveedor;
		this.observers = new Vector<Observer>();
	}
	
	public Material(){
		this.observers = new Vector<Observer>();
	}
	
	/* Geters y Seters */
	
	/**
	 * @return the nombre
	 */
	public String getNombre() {
		return nombre;
	}
	/**
	 * @param nombre the nombre to set
	 */
	public void setNombre(String nombre) {
		this.nombre = nombre;
	}
	/**
	 * @return the stock
	 */
	public int getStock() {
		return cantidadStock;
	}
	/**
	 * @param stock the stock to set
	 */
	public void setStock(int cantidadStock) {
		this.cantidadStock = cantidadStock;
	}
	/**
	 * @return the puntoDePedido
	 */
	public int getPuntoPedido() {
		return puntoPedido;
	}
	/**
	 * @param puntoDePedido the puntoDePedido to set
	 */
	public void setPuntoPedido(int puntoPedido) {
		this.puntoPedido = puntoPedido;
	}
	/**
	 * @return the costo
	 */
	public float getCosto() {
		return costo;
	}
	/**
	 * @param costo the costo to set
	 */
	public void setCosto(float costo) {
		this.costo = costo;
	}
	/**
	 * @return the proveedor
	 */
	public Proveedor getProveedor() {
		return proveedor;
	}
	/**
	 * @param proveedor the proveedor to set
	 */
	public void setProveedor(Proveedor proveedor) {
		this.proveedor = proveedor;
	}
	
	/**
	 * @return the cantidadStock
	 */
	public int getCantidadStock() {
		return cantidadStock;
	}
	/**
	 * @param cantidadStock the cantidadStock to set
	 */
	public void setCantidadStock(int cantidadStock) {
		this.cantidadStock = cantidadStock;
	}
	
	public int getCodigo() {
		return codigo;
	}

	public void setCodigo(int codigo) {
		this.codigo = codigo;
	}

	
	/* Metodos de la clase */

	@Override
	public void add(Observer o) {
		// TODO Auto-generated method stub
		this.observers.add(o);
	}

	@Override
	public void remove(Observer o) {
		// TODO Auto-generated method stub
		this.observers.remove(o);
	}

	@Override
	public void notifyAll(Object o) {
		// TODO Auto-generated method stub
		for (Observer obs : observers){
			obs.notify(o);
		}
	}

	public Vector<Observer> getObservers() {
		return observers;
	}

	public void setObservers(Vector<Observer> observers) {
		this.observers = observers;
	}
}
